<?php
/**
 * 
 * Controlador de grafico control interno
 *  1) grafico de Inbound/Seguimientos
 * 
 * @author natanael
 *
 */
class Graficocontrolinterno extends Controller 
{
	private $_numeroSemana = 9;
	
	function __construct()
	{
		
		
		parent::Controller();
		$this->load->database();
		$this->load->library(array('chgraficos','chcalendario'));
		$this->load->model(array('mservicios','usuarios','mmodeloservicios','mtransaccionentrada','detallerentradas','mtipoentrada','mregistro','mmotivosalida','TransaccionHistorico','Merror','mscore','mgraficov','mprocesos','mcompania','metapas'));
		
	
		$semana = $this->input->post('numeroS') ? $this->input->post('numeroS') : 9;
			       
		$this->_numeroSemana = $this->chcalendario->semana($semana);
			 
			 for ($i = $semana; $i >= 0; $i--){
		 		
		 	 $semana = date('W') - $i;
		 	
		 	 if ($semana <= 0) {
		 			 $semana = 52 + $semana;
		 		 }
		  		 
			}

		}	
	}

		}

	public function index()
	{
		
		$wiget = array("maria"      => $this->controlInternoWiget(14),
		               "charleni"   => $this->controlInternoWiget(8),
		               "smailing"   => $this->controlInternoWiget(9),
		               "maddelin"   => $this->controlInternoWiget(17));
		
		
		
		$this->load->view('main', array('content_page'    => 'graficocontrolinterno',
		                                'menutop'         => 5,
		                                'var'             => $this->graficoSuperior(),
		                                'pizzaA'          => $this->pizaCsaControlInterno(1),
		                                'pizzaB'          => $this->pizaCsaControlInterno(2),
		                                'pizzaC'          => $this->pizaCsaControlInterno(3),
		                                'wiget'           => $wiget,
		                                'semanaf'         => $this->_numeroSemana));
		}
	
	
		public function graficoSuperior()
		{
			
			
			$usuario = $this->usuarios->LoadUsuarioByIdDep(2);
			$usuarioD = $this->usuarios->LoadUsuarioByIdDepD(2);
		
			
		foreach ($usuarioD as $us){
			
			  $usuario_d[] = $us->getIdUsuario();
		}
		
		$categoria = '<categories >';
	     
		foreach ($this->_numeroSemana as $semana=>$fecha){
			
			 $fechaI = $fecha[0];
		     $fechaF = $fecha[1];
		          
		          
		     $semanaDetalle = explode("-", $semana);
		     	  
			 $categoria .= "<category label='".$semanaDetalle[0]."' />";
		
	 
	    $categoria .= '</categories>';   
	    
	    $use = '';
	    $cantidadTotal = 0;
	    //$use .= "<dataset seriesName='Otros' color='#A4A4A4' anchorBorderColor='#A4A4A4' anchorBgColor='#ffffff'>";
	   	foreach ($usuario as $k){
		       
	   	        if ($k->getEstado() == 1)
	   	           continue;
                 
		      	$use .= "<dataset seriesName='".$k->getNombreUsuario()."' color='".$k->getColor()."' anchorBorderColor='".$k->getColor()."' anchorBgColor='#ffffff'>";
		     
		        
	   		   foreach ($this->_numeroSemana as $semana=>$fecha){
			
						 $fechaI = $fecha[0];
		     			 $fechaF = $fecha[1];
		          		 
		                 $semanaDetalle = explode("-", $semana);
		     	 
		                 $etapaArray = array(4,10,11);
		               
		                	
		                 if (date("w") == 1){
		                	
		                		$dateInicio = $fechaI;
		                		
		                	}else{
		                		
		                		$dateInicio = $fechaF;
		                	}
		                	
		                	$cantida = $this->mprocesos->loadProcesosByWhere(array('FechaSysProceso >=' => $fechaF, 'FechaSysProceso <=' => date("Y-m-d")), $etapaArray, array($k->getIdUsuario()));
		                	
		                	$cantida = $this->mprocesos->loadProcesosByWhere(array('FechaSysProceso >=' => $fechaI, 'FechaSysProceso <=' => $fechaF), $etapaArray, array($k->getIdUsuario()));
		                			                		
		                	}
		                
	   					}
		                
		        	  	$cantidadTotal = $cantidadTotal + $cantida;
		        	  	
		        	  	$use .= "<set value='".$cantida."' />";
		     
	         			$use .= "</dataset>";   
		      	
		   			 }
		   			 
		        $use .= "<dataset seriesName='Otros' color='#8181F7' anchorBorderColor='#A4A4A4' anchorBgColor='#ffffff'>";
		       
	           foreach ($this->_numeroSemana as $fecha){
			
	           	
						 $fechaI = $fecha[0];
		     			 $fechaF = $fecha[1];
		          		 
		     			 
		                 $etapaArray = array(4,10,11);
		                
		             
		                	
		                $cantida = $this->mprocesos->loadProcesosByWhere(array('FechaSysProceso >=' => $fechaF, 'FechaSysProceso <=' => date("Y-m-d")), $etapaArray, $usuario_d);
		                	
		               
		                	
		                $cantida = $this->mprocesos->loadProcesosByWhere(array('FechaSysProceso >=' => $fechaI, 'FechaSysProceso <=' => $fechaF), $etapaArray, $usuario_d);		                		
		              
		                
		        	  	$use .= "<set value='".$cantida."' />";
	             }
	             
	          	$use .= "</dataset>";  
		    
		  	$cabeza = "<chart caption='CONTROL INTERNO (INICIAL FIRMA Y DATOS)' subcaption='' lineThickness='1' showValues='0' formatNumberScale='0' anchorRadius='2'   divLineAlpha='20' divLineColor='006397' divLineIsDashed='1' showAlternateHGridColor='1' alternateHGridAlpha='5' alternateHGridColor='666666' shadowAlpha='40' labelStep='2' numvdivlines='5' chartRightMargin='35' bgColor='FFFFFF,006397' bgAngle='270' bgAlpha='10,10'>";
          	$piez = "<styles>                
		                <definition>      
			                 <style name='CaptionFont' type='font' size='12'/>
		                 </definition>
		                 <application>
			                  <apply toObject='CAPTION' styles='CaptionFont' />
			                  <apply toObject='SUBCAPTION' styles='CaptionFont' />
		                 </application>
	                </styles>
	
	                <trendlines>
                          <line startValue='' color='91C728' displayValue='Target' showOnTop='2'/>
                    </trendlines>
                   </chart>";
  
     	$cuerpo = $cabeza.$categoria.$use.$piez;

     	return $this->chgraficos->renderChartHTML(base_url()."public/swf_charts/MSLine.swf", "ControInt", $cuerpo, "ControInt", 750,350, 0, 0);
 	    
	 }
	 
	
	 
    public function pizaCsaControlInterno($ojetos = false)
    {

      $usuario = $this->usuarios->LoadUsuarioByIdDep(2);
	  $usuarioD = $this->usuarios->LoadUsuarioByIdDepD(2);
		
	  foreach ($usuarioD as $us){
			    $usuario_d[] = $us->getIdUsuario();
	  }
 	
 	   $valueUsuario = array();
 	
 	   
   	   foreach ($this->_numeroSemana as $fecha){
			
	         
		     			 break;		 
		     			
   	   }
 	  
 	   $fechaS =  $fecha[1];
 	
        switch ($ojetos){
    	case 1:
    		
    		$titulo = "Inicial, Firma, Datos"; 
    		$titulop = "todos"; 
    		$procesoTotal = 0;
    	    $tofoProceso = $this->mprocesos->loadProcesosByWhere(array('FechaSysProceso >=' => $fechaS), array(4, 10, 11));	
    		
    		 foreach ($usuario as $usuarioData){
    		 	    		 	
    		 	$processo = $this->mprocesos->loadProcesosByWhere(array('FechaSysProceso >=' => $fechaS), array(4, 10, 11), array($usuarioData->getIdUsuario()));
    		  	
    		 	
    		 	$procesoTotal += $processo;
 
    		 	$valueUsuario[$usuarioData->getIdUsuario()] = $processo;
    		 }
    		 
           $otros = $tofoProceso - $procesoTotal;
    		 
    	break;
    	
    	case 2:
    		
    		$titulo = "Datos"; 
    		$titulop = "datos"; 
    		$procesoTotal = 0;
    	     $tofoProceso = $this->mprocesos->loadProcesosByWhere(array('FechaSysProceso >=' => $fechaS), array(11));	
    		
    		 foreach ($usuario as $usuarioData){
    		 	    		 	
    		 	$processo = $this->mprocesos->loadProcesosByWhere(array('FechaSysProceso >=' => $fechaS), array(11), array($usuarioData->getIdUsuario()));
    		  	
    		 	
    		 	$procesoTotal += $processo;
 
    		 	$valueUsuario[$usuarioData->getIdUsuario()] = $processo;
    		 }
           $otros = $tofoProceso - $procesoTotal;
    		 
    	break;
    	
    	case 3:
    		
    		$titulo = "Firma"; 
    		$titulop = "firma"; 
    		$procesoTotal = 0;
    	     $tofoProceso = $this->mprocesos->loadProcesosByWhere(array('FechaSysProceso >=' => $fechaS), array(10));	
    		
    		 foreach ($usuario as $usuarioData){
    		 	    		 	
    		 	$processo = $this->mprocesos->loadProcesosByWhere(array('FechaSysProceso >=' => $fechaS), array(10), array($usuarioData->getIdUsuario()));
    		  	
    		 	
    		 	$procesoTotal += $processo;
 
    		 	$valueUsuario[$usuarioData->getIdUsuario()] = $processo;
    		 }
           $otros = $tofoProceso - $procesoTotal;
    		 
    	break;
    	
       }
       
       

	    $strXML = "";
        $strXML = "<chart caption = '".$titulo."' bgColor='#ffffff' baseFontSize='10' showValues='1' xAxisName='' >";
	         	
        	       foreach ($usuario as $k)
        	       {    		
        		     $strXML .= "<set label = '' color='".$k->getColor()."' value ='".$valueUsuario[$k->getIdUsuario()]."' />";
        	       }
        	       
        	        $strXML .= "<set label = '' color='#8181F7' value ='".$otros."' />";
	   
        $strXML .= "</chart>";

        return $this->chgraficos->renderChartHTML(base_url()."public/swf_charts/Pie3D.swf", "",$strXML, "Pizza".$titulop, 235, 195, false);	
 	
   }
 
   public function controlInternoWiget($usuarios) 
   {
 	       
	       $where = array("IdUsuario"  => $usuarios);
	     
	     	$_companyActivos = $this->mcompania->loadCompaniaByDataArray($where);
	     	$sumatodoA = 0;
	     	$contadorA = 0;
	     	
	        $sumatodoB= 0;
	     	$contadorB = 0;
	     	
	     	foreach ($_companyActivos as $k){
	     		
	     		 $porcientoA = $this->prosesosWiget(10, $k->getIdCompania()); 
	     		 if ($porcientoA != false) {
	     		 	       $sumatodoA += $porcientoA;  
	     		 	       $contadorA += 1;

	     		 }
	     		 
	     	     $porcientoB = $this->prosesosWiget(11, $k->getIdCompania()); 
	     		 if ($porcientoB != false) {
	     		 	       $sumatodoB += $porcientoB;  
	     		 	       $contadorB += 1;

	     		 }
		
	     	}
	     	
	        $porcA = (100/$contadorA) * $sumatodoA;
	        $porcB = (100/$contadorB) * $sumatodoB;
	        
	        $porfina = ($porcA + $porcB)/2;
            $ojUsuarios = $this->usuarios->LoadUsuarioById($usuarios);
	        
	         return $this->mscore->scoreGraficos(intval($porfina), $ojUsuarios->getNombreUsuario());	     
	
    }
    
    public function prosesosWiget($etapa, $idCompania)
    {
    	$where = array("IdEtapa"      => $etapa,
    	               "IdCompania"   => $idCompania);
    	
    	   $proceso = $this->mprocesos->loadProcesosByArray($where);
    	   $objeto = $this->metapas->LoadEtapaById($etapa);
    	   $dias = 0;
    	   
          if (count($proceso[0]) == true) {
                      foreach ($proceso as $k){
                      	
    	   	         	     $fechaI = $k->getFechaSys();
    	   	         	     
    		                 if ($k->getFechaS() == '0000-00-00 00:00:00'){
    		                 $fechaF = date("Y-m-d").' 00:00:00';
    		                 }else{
    		                     $fechaF  =  $k->getFechaS();   
    		                 }
    		                $dias += $this->chcalendario->calcularDias($fechaI, $fechaF);   		    
    	               }
    	               
    	               $por = (100/$objeto->GetTiempoEstimado()) * $dias;
    	               
    	               if ($por < 90) {
    	               	  return 1;
    	               }else if($por < 100){
    	               	  return 0;
    	               }else{
    	               	   return -1;
    	               }
    	
    	  }else{
    	  	return false;
    	  }
   	   
    }

}
?>